#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: WangYongCun
# Environment: python 3.5.1
import sys
menu = {
    '魏国':
        {
            '青州': ['北海', '东莱', '平原', '齐郡', '济南'],
            '并州': ['太原', '上党', '西河', '雁门'],
            '幽州': ['涿郡', '渔阳', '辽西', '上谷'],
            '徐州': ['下邳', '彭城', '琅琊', '东海', '广陵']
        },
    '蜀国':
        {
            '益州': ['蜀郡', '汉中', '建宁', '巴郡', '巴西', '巴东']
        },
    '吴国':
        {
            '荆州': ['江夏', '襄阳'],
            '扬州': ['九江', '庐江', '丹阳'],
            '交州': ['南海', '交趾']
        }
}
show_message = '''
    *********************************************************************
    *****                三国争霸势力分布系统             v1.0      *****
    *********************************************************************
'''
exit_message = '''
    *********************************************************************
    *****                        再见                               *****
    *********************************************************************
'''
space = '    '
print(show_message)
flag1 = True
while flag1:  # 第一层目录循环
    menu_1 = sorted(menu.keys())  # menu_1 是第一层国家的有序列表
    n = 0
    for key_1 in menu_1:   # 输出第一层国家列表
        n += 1
        print(space, n, key_1, '\t', end='')
    choice_1 = str(input('\n\n    请选择相应的数字序号，按q退出 :'))  # 用户选择
    if choice_1 == 'q':  # 用户选择q则退出程序
        print(exit_message)
        sys.exit(0)
    elif choice_1.isdigit() and 0 < int(choice_1) <= len(menu_1):  # 输入数字有效性检查
        n_1 = int(choice_1) - 1  # 将输入数字变成列表序号
        country = menu_1[n_1]    # 获取国家名字
        menu_2 = sorted(menu[country])  # 获取对应国家的州的列表
        flag2 = True
        while flag2:  # 第二层目录循环
            print('    当前选择是: %s' % country)
            n = 0
            for key_2 in menu_2:
                n += 1
                print('\n', space, n, key_2)  # 输出第二层州列表
            choice_2 = str(input('\n    请选择相应的数字序号，按q退出，按b返回上一级 :'))
            if choice_2 == 'q':  # 退出程序
                print(exit_message)
                sys.exit(0)
            elif choice_2 == 'b':  # 返回第一级国家目录
                flag2 = False
            elif choice_2.isdigit() and 0 < int(choice_2) <= len(menu_2):
                n_2 = int(choice_2) - 1
                zhou = menu_2[n_2]  # 获取州名字
                menu_3 = menu[country][zhou]  # 通过国家名字和州名字获取第三层对应的城池列表
                flag3 = True
                while flag3:  # 第三层目录循环
                    print('    当前选择：%s - %s' % (country, zhou))
                    n = 0
                    for key_3 in menu_3:
                        n += 1
                        print('\n', space, n, key_3)  # 输出三层城池列表
                    choice_3 = str(input('\n    按q退出,按b返回上一级: '))
                    if choice_3 == 'q':   # 退出程序
                        print(exit_message)
                        sys.exit(0)
                    elif choice_3 == 'b':  # 返回第二级州目录
                        flag3 = False
